package com.atguigu.jxc.dao;

import com.atguigu.jxc.domain.ProductVO;
import com.atguigu.jxc.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author: Leon
 * @DateTime: 2021/9/25 10:45
 */
public interface BasicsMessageDao {

    //1.1 查询总数total
    Integer getTotal(@Param("supplierName") String supplierName);

    //1.2根据前端传来的第几页和每页显示多少条，分页显示
    List<Supplier> getList(@Param("totalPage") int totalPage, @Param("pageSize") Integer rows, @Param("supplierName") String supplierName);

    //2.1 新增供应商
    void addSupplier(Supplier supplier);

    //2.2 修改供应商
    void updateSupplier(Supplier supplier);

    //3、删除供应商
    void deleteSupplier(String[] ids);

    //4.1 先查询total
    int getCustomerTotal(@Param("customerName") String customerName);

    //4.2查询customer列表分页数据
    List<Customer> getCustomerList(@Param("totalPage") int totalPage, @Param("pageSize") Integer pageSize,@Param("customerName") String customerName);

    //5.1 若没有id则为添加
    void addCustomer(Customer customer);

    //5.2 若有id则为修改
    void updateCustomer(Customer customer);


    //6、客户管理-批量删除客户
    void deleteCustomer(@Param("ids") String[] ids);

    //7、商品管理-树形目录
    List<ProductVO> getProductTree();

    //8、商品管理-查询所有商品单位
    List<Unit> getAllUnit();


    //9.1 总条数
    Integer getGoodsTotal(@Param("goodsName") String goodsName);


    //9.2.0 根据goodsTypeId获取对象，再会根据pId区分几级分类
    GoodsType selectGoodsType(@Param("goodsTypeId") Integer goodsTypeId);

    //9.2.1 查询所有商品
    List<Goods> getGoodListAll(@Param("totalPage") Integer totalPage,
                               @Param("pageSize") Integer pageSize,
                               @Param("goodsName") String goodsName,
                               @Param("goodsTypeId") Integer goodsTypeId);

    //9.2.2 查询二级商品
    List<Goods> getGoodsList02(@Param("totalPage") Integer totalPage,
                             @Param("pageSize") Integer pageSize,
                             @Param("goodsName") String goodsName,
                             @Param("goodsTypeId") Integer goodsTypeId);


    //9.2 查询三级商品
    List<Goods> getGoodsList03(@Param("totalPage") Integer totalPage,
                             @Param("pageSize") Integer pageSize,
                             @Param("goodsName") String goodsName,
                             @Param("goodsTypeId") Integer goodsTypeId);



    //10、商品管理-新增分类
    void addGoodType(@Param("goodsTypeName") String goodsTypeName,
                     @Param("pId") Integer pId ,
                     @Param("goodTypeState")Integer goodTypeState);

    //11、商品管理-删除分类
    void deleteGoodType(@Param("goodsTypeId") Integer goodsTypeId);


    //14、根据商品名称或编码查询无库存商品列表
    //1、总条数
    Integer NoInventoryGoodsListTotal(@Param("nameOrCode") String nameOrCode);

    //2、NoInventoryGoodsList
    List<Goods> getNoInventoryQuantity(@Param("pageNo") Integer pageNo,
                                       @Param("pageSize") Integer pageSize,
                                       @Param("nameOrCode") String nameOrCode);


    //2、InventoryGoodsList
    List<Goods> getInventoryQuantity(@Param("pageNo") Integer pageNo,
                                     @Param("pageSize") Integer pageSize,
                                     @Param("nameOrCode") String nameOrCode);
}
